home *** CD-ROM | disk | FTP | other *** search
/ IRIX Base Documentation 2002 November / SGI IRIX Base Documentation 2002 November.iso / usr / share / catman / p_man / cat3 / SCSL / zheevr.z / zheevr
Encoding:
Text File  |  2002-10-03  |  12.1 KB  |  331 lines

  1.  
  2.  
  3.  
  4. ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))                                                          ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))
  5.  
  6.  
  7.  
  8. NNNNAAAAMMMMEEEE
  9.      ZHEEVR - compute selected eigenvalues and, optionally, eigenvectors of a
  10.      complex Hermitian matrix T
  11.  
  12. SSSSYYYYNNNNOOOOPPPPSSSSIIIISSSS
  13.      SUBROUTINE ZHEEVR( JOBZ, RANGE, UPLO, N, A, LDA, VL, VU, IL, IU, ABSTOL,
  14.                         M, W, Z, LDZ, ISUPPZ, WORK, LWORK, RWORK, LRWORK,
  15.                         IWORK, LIWORK, INFO )
  16.  
  17.          CHARACTER      JOBZ, RANGE, UPLO
  18.  
  19.          INTEGER        IL, INFO, IU, LDA, LDZ, LIWORK, LRWORK, LWORK, M, N
  20.  
  21.          DOUBLE         PRECISION ABSTOL, VL, VU
  22.  
  23.          INTEGER        ISUPPZ( * ), IWORK( * )
  24.  
  25.          DOUBLE         PRECISION RWORK( * ), W( * )
  26.  
  27.          COMPLEX*16     A( LDA, * ), WORK( * ), Z( LDZ, * )
  28.  
  29. IIIIMMMMPPPPLLLLEEEEMMMMEEEENNNNTTTTAAAATTTTIIIIOOOONNNN
  30.      These routines are part of the SCSL Scientific Library and can be loaded
  31.      using either the -lscs or the -lscs_mp option.  The -lscs_mp option
  32.      directs the linker to use the multi-processor version of the library.
  33.  
  34.      When linking to SCSL with -lscs or -lscs_mp, the default integer size is
  35.      4 bytes (32 bits). Another version of SCSL is available in which integers
  36.      are 8 bytes (64 bits).  This version allows the user access to larger
  37.      memory sizes and helps when porting legacy Cray codes.  It can be loaded
  38.      by using the -lscs_i8 option or the -lscs_i8_mp option. A program may use
  39.      only one of the two versions; 4-byte integer and 8-byte integer library
  40.      calls cannot be mixed.
  41.  
  42. PPPPUUUURRRRPPPPOOOOSSSSEEEE
  43.      ZHEEVR computes selected eigenvalues and, optionally, eigenvectors of a
  44.      complex Hermitian matrix T. Eigenvalues and eigenvectors can be selected
  45.      by specifying either a range of values or a range of indices for the
  46.      desired eigenvalues.
  47.  
  48.      Whenever possible, ZHEEVR calls ZSTEGR to compute the
  49.      eigenspectrum using Relatively Robust Representations.  ZSTEGR computes
  50.      eigenvalues by the dqds algorithm, while orthogonal eigenvectors are
  51.      computed from various "good" L D L^T representations (also known as
  52.      Relatively Robust Representations). Gram-Schmidt orthogonalization is
  53.      avoided as far as possible. More specifically, the various steps of the
  54.      algorithm are as follows. For the i-th unreduced block of T,
  55.         (a) Compute T - sigma_i = L_i D_i L_i^T, such that L_i D_i L_i^T
  56.              is a relatively robust representation,
  57.         (b) Compute the eigenvalues, lambda_j, of L_i D_i L_i^T to high
  58.             relative accuracy by the dqds algorithm,
  59.         (c) If there is a cluster of close eigenvalues, "choose" sigma_i
  60.  
  61.  
  62.  
  63.                                                                         PPPPaaaaggggeeee 1111
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70. ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))                                                          ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))
  71.  
  72.  
  73.  
  74.             close to the cluster, and go to step (a),
  75.         (d) Given the approximate eigenvalue lambda_j of L_i D_i L_i^T,
  76.             compute the corresponding eigenvector by forming a
  77.             rank-revealing twisted factorization.
  78.      The desired accuracy of the output can be specified by the input
  79.      parameter ABSTOL.
  80.  
  81.      For more details, see "A new O(n^2) algorithm for the symmetric
  82.      tridiagonal eigenvalue/eigenvector problem", by Inderjit Dhillon,
  83.      Computer Science Division Technical Report No. UCB//CSD-97-971, UC
  84.      Berkeley, May 1997.
  85.  
  86.  
  87.      Note 1 : ZHEEVR calls ZSTEGR when the full spectrum is requested on
  88.      machines which conform to the ieee-754 floating point standard.  ZHEEVR
  89.      calls DSTEBZ and ZSTEIN on non-ieee machines and
  90.      when partial spectrum requests are made.
  91.  
  92.      Normal execution of ZSTEGR may create NaNs and infinities and hence may
  93.      abort due to a floating point exception in environments which do not
  94.      handle NaNs and infinities in the ieee standard default manner.
  95.  
  96.  
  97. AAAARRRRGGGGUUUUMMMMEEEENNNNTTTTSSSS
  98.      JOBZ    (input) CHARACTER*1
  99.              = 'N':  Compute eigenvalues only;
  100.              = 'V':  Compute eigenvalues and eigenvectors.
  101.  
  102.      RANGE   (input) CHARACTER*1
  103.              = 'A': all eigenvalues will be found.
  104.              = 'V': all eigenvalues in the half-open interval (VL,VU] will be
  105.              found.  = 'I': the IL-th through IU-th eigenvalues will be found.
  106.  
  107.      UPLO    (input) CHARACTER*1
  108.              = 'U':  Upper triangle of A is stored;
  109.              = 'L':  Lower triangle of A is stored.
  110.  
  111.      N       (input) INTEGER
  112.              The order of the matrix A.  N >= 0.
  113.  
  114.      A       (input/output) COMPLEX*16 array, dimension (LDA, N)
  115.              On entry, the Hermitian matrix A.  If UPLO = 'U', the leading N-
  116.              by-N upper triangular part of A contains the upper triangular
  117.              part of the matrix A.  If UPLO = 'L', the leading N-by-N lower
  118.              triangular part of A contains the lower triangular part of the
  119.              matrix A.  On exit, the lower triangle (if UPLO='L') or the upper
  120.              triangle (if UPLO='U') of A, including the diagonal, is
  121.              destroyed.
  122.  
  123.      LDA     (input) INTEGER
  124.              The leading dimension of the array A.  LDA >= max(1,N).
  125.  
  126.  
  127.  
  128.  
  129.                                                                         PPPPaaaaggggeeee 2222
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136. ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))                                                          ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))
  137.  
  138.  
  139.  
  140.      VL      (input) DOUBLE PRECISION
  141.              VU      (input) DOUBLE PRECISION If RANGE='V', the lower and
  142.              upper bounds of the interval to be searched for eigenvalues. VL <
  143.              VU.  Not referenced if RANGE = 'A' or 'I'.
  144.  
  145.      IL      (input) INTEGER
  146.              IU      (input) INTEGER If RANGE='I', the indices (in ascending
  147.              order) of the smallest and largest eigenvalues to be returned.  1
  148.              <= IL <= IU <= N, if N > 0; IL = 1 and IU = 0 if N = 0.  Not
  149.              referenced if RANGE = 'A' or 'V'.
  150.  
  151.      ABSTOL  (input) DOUBLE PRECISION
  152.              The absolute error tolerance for the eigenvalues.  An approximate
  153.              eigenvalue is accepted as converged when it is determined to lie
  154.              in an interval [a,b] of width less than or equal to
  155.  
  156.              ABSTOL + EPS *   max( |a|,|b| ) ,
  157.  
  158.              where EPS is the machine precision.  If ABSTOL is less than or
  159.              equal to zero, then  EPS*|T|  will be used in its place, where
  160.              |T| is the 1-norm of the tridiagonal matrix obtained by reducing
  161.              A to tridiagonal form.
  162.  
  163.              See "Computing Small Singular Values of Bidiagonal Matrices with
  164.              Guaranteed High Relative Accuracy," by Demmel and Kahan, LAPACK
  165.              Working Note #3.
  166.  
  167.              If high relative accuracy is important, set ABSTOL to DLAMCH(
  168.              'Safe minimum' ).  Doing so will guarantee that eigenvalues are
  169.              computed to high relative accuracy when possible in future
  170.              releases.  The current code does not make any guarantees about
  171.              high relative accuracy, but furutre releases will. See J. Barlow
  172.              and J. Demmel, "Computing Accurate Eigensystems of Scaled
  173.              Diagonally Dominant Matrices", LAPACK Working Note #7, for a
  174.              discussion of which matrices define their eigenvalues to high
  175.              relative accuracy.
  176.  
  177.      M       (output) INTEGER
  178.              The total number of eigenvalues found.  0 <= M <= N.  If RANGE =
  179.              'A', M = N, and if RANGE = 'I', M = IU-IL+1.
  180.  
  181.      W       (output) DOUBLE PRECISION array, dimension (N)
  182.              The first M elements contain the selected eigenvalues in
  183.              ascending order.
  184.  
  185.      Z       (output) COMPLEX*16 array, dimension (LDZ, max(1,M))
  186.              If JOBZ = 'V', then if INFO = 0, the first M columns of Z contain
  187.              the orthonormal eigenvectors of the matrix A corresponding to the
  188.              selected eigenvalues, with the i-th column of Z holding the
  189.              eigenvector associated with W(i).  If JOBZ = 'N', then Z is not
  190.              referenced.  Note: the user must ensure that at least max(1,M)
  191.              columns are supplied in the array Z; if RANGE = 'V', the exact
  192.  
  193.  
  194.  
  195.                                                                         PPPPaaaaggggeeee 3333
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202. ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))                                                          ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))
  203.  
  204.  
  205.  
  206.              value of M is not known in advance and an upper bound must be
  207.              used.
  208.  
  209.      LDZ     (input) INTEGER
  210.              The leading dimension of the array Z.  LDZ >= 1, and if JOBZ =
  211.              'V', LDZ >= max(1,N).
  212.  
  213.      ISUPPZ  (output) INTEGER ARRAY, dimension ( 2*max(1,M) )
  214.              The support of the eigenvectors in Z, i.e., the indices
  215.              indicating the nonzero elements in Z. The i-th eigenvector is
  216.              nonzero only in elements ISUPPZ( 2*i-1 ) through ISUPPZ( 2*i ).
  217.  
  218.      WORK    (workspace/output) COMPLEX*16 array, dimension (LWORK)
  219.              On exit, if INFO = 0, WORK(1) returns the optimal LWORK.
  220.  
  221.      LWORK   (input) INTEGER
  222.              The length of the array WORK.  LWORK >= max(1,2*N).  For optimal
  223.              efficiency, LWORK >= (NB+1)*N, where NB is the max of the
  224.              blocksize for ZHETRD and for ZUNMTR as returned by ILAENV.
  225.  
  226.              If LWORK = -1, then a workspace query is assumed; the routine
  227.              only calculates the optimal size of the WORK array, returns this
  228.              value as the first entry of the WORK array, and no error message
  229.              related to LWORK is issued by XERBLA.
  230.  
  231.      RWORK   (workspace/output) DOUBLE PRECISION array, dimension (LRWORK)
  232.              On exit, if INFO = 0, RWORK(1) returns the optimal (and minimal)
  233.              LRWORK.
  234.  
  235.      LRWORK   (input) INTEGER
  236.              The length of the array RWORK.  LRWORK >= max(1,24*N).
  237.  
  238.              If LRWORK = -1, then a workspace query is assumed; the routine
  239.              only calculates the optimal size of the RWORK array, returns this
  240.              value as the first entry of the RWORK array, and no error message
  241.              related to LRWORK is issued by XERBLA.
  242.  
  243.      IWORK   (workspace/output) INTEGER array, dimension (LIWORK)
  244.              On exit, if INFO = 0, IWORK(1) returns the optimal (and minimal)
  245.              LIWORK.
  246.  
  247.      LIWORK   (input) INTEGER
  248.              The dimension of the array IWORK.  LIWORK >= max(1,10*N).
  249.  
  250.              If LIWORK = -1, then a workspace query is assumed; the routine
  251.              only calculates the optimal size of the IWORK array, returns this
  252.              value as the first entry of the IWORK array, and no error message
  253.              related to LIWORK is issued by XERBLA.
  254.  
  255.      INFO    (output) INTEGER
  256.              = 0:  successful exit
  257.              < 0:  if INFO = -i, the i-th argument had an illegal value
  258.  
  259.  
  260.  
  261.                                                                         PPPPaaaaggggeeee 4444
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268. ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))                                                          ZZZZHHHHEEEEEEEEVVVVRRRR((((3333SSSS))))
  269.  
  270.  
  271.  
  272.              > 0:  Internal error
  273.  
  274. FFFFUUUURRRRTTTTHHHHEEEERRRR DDDDEEEETTTTAAAAIIIILLLLSSSS
  275.      Based on contributions by
  276.         Inderjit Dhillon, IBM Almaden, USA
  277.         Osni Marques, LBNL/NERSC, USA
  278.         Ken Stanley, Computer Science Division, University of
  279.           California at Berkeley, USA
  280.  
  281.  
  282. SSSSEEEEEEEE AAAALLLLSSSSOOOO
  283.      INTRO_LAPACK(3S), INTRO_SCSL(3S)
  284.  
  285.      This man page is available only online.
  286.  
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304.  
  305.  
  306.  
  307.  
  308.  
  309.  
  310.  
  311.  
  312.  
  313.  
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.                                                                         PPPPaaaaggggeeee 5555
  328.  
  329.  
  330.  
  331.